home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gigarom 4
/
Mac Giga-ROM 4.0 - 1993.toast
/
FILES
/
DEV
/
I-Z
/
TADS v2.0.sit
/
TADSVER.MAC
< prev
next >
Wrap
Text File
|
1992-12-20
|
8KB
|
174 lines
This file contains a list of changes that have been made to TADS
since the initial 2.0 release. Most of the changes are fixes to
bugs, so they don't change the documented behavior, but a few, as
explained below, add new functionality to TADS.
2.0.11 12/20/92 bug fixes
- Goto statement labels were occasionally not released properly,
resulting in spurious internal errors.
- The 'continue' statement did not work as documented in 'for'
statements. Instead of jumping to the re-initializer expression,
as it now does, the 'continue' incorrectly jumped to the condition.
- The run-time is now slightly smaller and faster.
- The compiler generated spurious internal warning messages when
switch statements were used. The warnings did not indicate any
actual problem, and have been removed.
- The compiler did not process locals correctly when multiple disjoint
blocks within a function or method had locals, and a later block had
fewer locals than a previous block (yes, it's a somewhat obscure bug).
2.0.10 12/14/92 minor changes
- The startup dialogs now fit better on standard (Plus/SE) monitors.
- Output is faster in the run-time.
- The Debugger sometimes couldn't find include files that weren't
in the current directory (even when the source path had been properly
set up with the startup dialog); this has been fixed.
2.0.9 12/12/92 New features
- NEW FEATURE: the new user function commandPrompt, if provided by
the user's game program, will be called prior to each player command.
If the commandPrompt function is provided, the default ">" prompt is
NOT displayed; if no commandPrompt function is defined, the default ">"
is used. This should not affect existing games at all, unless a game
defines its own function, method, or property called commandPrompt
having a different purpose. The commandPrompt function returns no
value. The function takes a single argument: a number, indicating
the type of command that the system is prompting for:
0 - normal command
1 - command after invalid word (allowing "oops" to be used)
2 - disambiguation (after "which x do you mean..." question)
3 - command after askdo (after "what do you want to x?")
4 - command after askio
Note that the default prompt in all cases is simply ">", and in all
cases a new command can be entered. However, when the type code is
2, 3, or 4, a question has just been displayed by the run-time, so
the commandPrompt function may want to suppress any pre-command
information or prompt text. Case 1 is generally identical to case 0.
- NEW FEATURE: A new built-in function has been added, which allows
the game program to suppress the display of text that would normally
be displayed with double-quoted strings or the say() function. The
function is called outhide(), and it takes one argument: a flag,
indicating whether to suppress or re-enable the display of output.
If the flag is true, output is suppressed; if the flag is nil, output
is re-enabled. Any output that occurs between outhide(true) and
outhide(nil) is discarded. However, outhide(nil) returns a value
indicating whether any output did in fact occur since the call to
outhide(true); this allows you to determine if any output would have
occurred, even though the output is not seen by the player. Note
that this is effectively the same mechanism used by the player command
parser for noun disambiguation using the verDoXxx and verIoXxx
methods, as described in the TADS author's manual. There is no way
to recover the text that was suppressed by outhide(); the text is
simply discarded, so the only information available is whether any
text was generated.
2.0.8 12/03/92 Mac bug fixes and minor changes
- The "disable argument checking" option in the v1 compatibility
dialog was reversed - checking the box would actually enable argument
checking, while leaving it unchecked would disable it.
- The include path list was not applied correctly in certain cases.
- The startup dialogs were too large for a standard (9 inch) monitor.
- NEW FEATURE: When the keyword $$ABEND is typed as the entire command,
the run-time immediately terminates and returns to DOS. This emergency
escape is provided so that TR can be terminated if the game somehow
gets into a state where a more graceful exit is not possible.
- NEW FEATURE: The parser now calls two new optional methods in the
game program. These new methods are intended to help speed up the
identification of words when many objects have the same vocabulary.
If the new methods are not present, behavior is the same as before,
so existing games will run unchanged. The new methods are validDoList
and validIoList; they are associated with the "deepverb" object for
the current command. They are called with three parameters: the actor,
the prep, and the other object (indirect object for validDoList and
direct object for validIoList; the value of the parameter will be nil
if not applicable). These methods are called prior to the disambiguation
pass (using verDoXxx/verIoXxx), and prior to testing any objects with
validDo/validIo.
The return value of validDoList/validIoList is a list of all of the
valid objects for the verb. It is fine for these methods to return
*too many* objects, since each object is still tested with validDo
(or validIo) and the appropriate verDoXxx/verIoXxx methods. Generally,
these methods should simply return a list of all of the accessible
objects in the actor's current location (or the actor's location's
location), plus a list of all of the "floating" objects (which use
methods for the location properties).
An appropriate definition for validDoList in the deepverb object
appears below:
validDoList(actor, prep, iobj) =
{
local ret;
local loc;
loc := actor.location;
while (loc.location) loc := loc.location;
ret := visibleList(actor) + visibleList(loc)
+ global.floatingList;
return(ret);
}
This same definition (with the name changed) is appropriate
for validIoList in deepverb. This returns a list of all of the
objects visible in the current location, plus the global list of
all floating objects; this should be a superset of the list of
accessible objects in most games. The only verbs that normally
requires a different value of validIoList/validDoList are verbs
such as "ask" and "tell" that allow any object (whether accessible
or not) to be used as indirect objects; for these, simply use this
definition:
validIoList = nil
This takes advantage of the reverse compatibility feature: when the
method returns nil, all objects with matching vocabulary are used.
The one additional game change required to take advantage of this
new feature is that global.floatingList must be built during
initialization. This can be done easily with the following loop:
global.floatingList := [];
for (o := firstobj(floatingItem) ; o ; o := nextobj(o, floatingItem))
global.floatingList += o;
This should be placed in the preinit or init function. Note that
all objects which have location methods should be declared to be
of class floatingItem:
class floatingItem: object;
This class doesn't do anything except serve as a flag that an
object should be placed in the floatingList.
2.0.7 12/01/92 Macintosh bug fix release
- The run-time occasionally missed the \ in an escape sequence in
output strings.
- The software would not run on 68000-based (Plus and SE) Macs due to
an alignment error.
- If a "save" command was executed prior to a "restore", the .GAM
file would be overwritten with the saved game data.
2.0.6 11/24/92 first general Macintosh TADS 2.0 release